package com.ecloud.trend.service;

import com.ecloud.trend.dto.TrendSectionDto;
import com.ecloud.trend.vo.TrendDataVo;
import com.ecloud.trend.vo.TrendHistPositionVo;
import com.ecloud.trend.vo.TrendHistStatusVo;

import java.util.List;

/**
 * Trend的服务接口
 *
 * @author Squbi
 * @date 2021/6/28 16:45
 */
public interface TrendService {
    /**
     * 测试链接
     *
     * @return 连接状态是否正常
     * @author Squbi
     * @date 2021/6/28 16:46
     */
    boolean testConn();

    /**
     * 标签的历史定位
     *
     * @param tag 标签
     * @return {@link TrendHistPositionVo}
     * @author Squbi
     * @date 2021/6/28 16:46
     */
    TrendHistPositionVo histPosition(String tag);

    /**
     * 标签对应的历史状态
     *
     * @param tag 标签
     * @return {@link TrendHistStatusVo}
     * @author Squbi
     * @date 2021/6/28 16:46
     */
    TrendHistStatusVo histStatus(String tag);

    /**
     * 标签对应的所有数据
     *
     * @param tag 标签
     * @return {@link TrendDataVo}
     * @author Squbi
     * @date 2021/6/28 16:46
     */
    List<TrendDataVo> trendAll(String tag);

    /**
     * 标签对应的最新数据
     *
     * @param tag 标签
     * @return {@link TrendDataVo}
     * @author Squbi
     * @date 2021/6/28 16:46
     */
    List<TrendDataVo> lastValue(String tag);

    /**
     * 批量获取标签的最新数据
     *
     * @param tags 标签
     * @return {@link TrendDataVo}
     * @author Squbi
     * @date 2021/6/28 16:46
     */
    List<TrendDataVo> lastValues(String[] tags);

    /**
     * 区间以获取标签数据
     *
     * @param sectionDto {@link TrendSectionDto}
     * @return {@link TrendDataVo}
     * @author Squbi
     * @date 2021/6/28 17:22
     */
    List<TrendDataVo> sectionData(TrendSectionDto sectionDto);
}
